/**
 * TDS PEC 4
 * Grupo 3H2M
 *
 * El paquete <code>edu.uoc.tds.pec4.server.bbdd</code> agrupa todos los
 * interfaces y clases que encapsulan los objetos de acceso a datos (DAO),para
 * realizar el acceso a datos. La base de datos es PostgreSQL.
 */
package edu.uoc.tds.pec4.server.bbdd;

import edu.uoc.tds.pec4.beans.EquipamientoDTO;
import edu.uoc.tds.pec4.server.bbdd.exceptions.DataBaseDAOException;
import java.util.List;

/** 
 * El interfaz <code>IEquipamientoDAO</code> es el componente de software que suministra
 * una interfaz común entre la aplicación y la base de datos, relacionada con los
 * servicios del subsistema Mantenimiento.<br />
 * Extiende la clase <code>DataBaseDAO</code><br />
 * Es el interfaz común que todas las implementaciones de IEquipamientoDAO deben cumplir.<br />
 *
 * @author	Luis Rivas Mariño
 * @version	03/12/2011
 * @since	1.00
 * @see         edu.uoc.tds.pec4.server.bbdd.exceptions.DataBaseDAOException
 */
public interface IEquipamientoDAO {

    /**
     * Realiza el alta de un equipamiento en la base de datos.
     * @return  el nuevo id del equipamiento dado de alta
     * @throws  DataBaseDAOException En caso de generarse una excepción de acceso
     *          a la base de datos se dispara al nivel superior
     */
    public int altaEquipamiento(EquipamientoDTO equipamiento) throws DataBaseDAOException;

    /**
     * Realiza la baja lógica de un equipamiento en la base de datos.
     * @return  true Si la baja lógica se realizó satisfactoriamente
     *          false Resto de los casos
     * @throws  DataBaseDAOException En caso de generarse una excepción de acceso
     *          a la base de datos se dispara al nivel superior
     */
    public void bajaEquipamiento(int idEquipamiento) throws DataBaseDAOException;

    /**
     * Realiza la activación de un equipamiento que estaba en baja lógica
     * @param idEquipamiento El identificador del equipamiento a activar
     * @throws RemoteException
     * @throws GestorMantenimientoException 
     */
    public void activaEquipamiento(int idEquipamiento) throws DataBaseDAOException;

    /**
     * Realiza la consulta de un equipamiento en la base de datos.
     * @return  true Si la consulta se realizó satisfactoriamente
     *          false Resto de los casos
     * @throws  DataBaseDAOException En caso de generarse una excepción de acceso
     *          a la base de datos se dispara al nivel superior
     */
    public EquipamientoDTO consultaEquipamiento(int idEquipamiento) throws DataBaseDAOException;

    /**
     * Realiza la modificación de un equipamiento en la base de datos.
     * @return  true Si el alta se realizó satisfactoriamente
     *          false Resto de los casos
     * @throws  DataBaseDAOException En caso de generarse una excepción de acceso
     *          a la base de datos se dispara al nivel superior
     */
    public void modificaEquipamiento(EquipamientoDTO equipamiento) throws DataBaseDAOException;

    /**
     * Devuelve la lista de equipamiento existente en la base de datos
     * @return  La lista de todos los equipamientos de la aplicación
     * @throws  DataBaseDAOException En caso de generarse una excepción de acceso
     *          a la base de datos se dispara al nivel superior
     */
    public List<EquipamientoDTO> listaEquipamiento() throws DataBaseDAOException;

}